package es.udc.fbellas.j2ee.tiendaweb.model.carrito;



import java.sql.Connection;
import javax.sql.DataSource;


import es.udc.fbellas.j2ee.tiendaweb.model.producto.TO.ProductoTO;
import es.udc.fbellas.j2ee.tiendaweb.model.producto.DAO.SQLProductoDAOFactory;
import es.udc.fbellas.j2ee.tiendaweb.model.producto.DAO.SQLProductoDAO;

import es.udc.fbellas.j2ee.tiendaweb.model.lineapedido.TO.LineaPedidoTO;
import es.udc.fbellas.j2ee.tiendaweb.model.lineapedido.DAO.SQLLineaPedidoDAOFactory;
import es.udc.fbellas.j2ee.tiendaweb.model.lineapedido.DAO.SQLLineaPedidoDAO;

import es.udc.fbellas.j2ee.util.sql.GeneralOperations;
import es.udc.fbellas.j2ee.util.sql.SimpleDataSource;    
import es.udc.fbellas.j2ee.util.exceptions.InternalErrorException;


public class LineaCarrito {

    private int numUnidades;
    private int idProducto;

    public LineaCarrito(int idProducto, int numUnidades) {
        
    	this.numUnidades=numUnidades;
    	this.idProducto=idProducto;
       
    }
    
    public int getNumUnidades() {
        return numUnidades;
    }

    public int getIdProducto() {
        return idProducto;
    }

    public void setNumUnidades(int num) {
        numUnidades=num;
    }

    public void setIdProducto(int id) {
        idProducto=id;
    }


  //devuelve un producto
	public ProductoTO getDatosProducto(int idProducto){

    	ProductoTO productoTO1=null;
		Connection connection = null;
		
		try{

        DataSource dataSource = new SimpleDataSource();
        connection = dataSource.getConnection();        
        SQLProductoDAO dao = SQLProductoDAOFactory.getDAO();

        productoTO1 = dao.find(connection,idProducto);


		} catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                GeneralOperations.closeConnection(connection);
            } catch (InternalErrorException e) {
                e.printStackTrace();
            }
        }
		return productoTO1;
}

    public boolean comparaId(int id) {

		return (new Integer(idProducto).equals(new Integer(id)));
	}

    public String toString() {
        return new String(" Producto = " +  idProducto + " | numUnidades = " + numUnidades );
    }
    
    public String visualizaLinea() {

		ProductoTO producto=this.getDatosProducto(idProducto);
        return new String(" Producto = " +  producto.getNombreProducto() + " | numUnidades = " + numUnidades + " | precio unitario = " + producto.getPrecio());
    }


//hace persistente la linea del carrto
	public void creaLineaPedido(int idPedido){

		ProductoTO producto = this.getDatosProducto(this.idProducto);

        Connection connection = null;
    
        try {        
           DataSource dataSource = new SimpleDataSource();
           connection = dataSource.getConnection();        
           SQLLineaPedidoDAO dao = SQLLineaPedidoDAOFactory.getDAO();


            LineaPedidoTO lineaTO = new LineaPedidoTO(idPedido,0,numUnidades,producto.getPrecio(),"PENDIENTE",idProducto);
            lineaTO = dao.create(connection, lineaTO);
            System.out.println("linea creada => " + lineaTO);
            
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                GeneralOperations.closeConnection(connection);
            } catch (InternalErrorException e) {
                e.printStackTrace();
            }
        }





	}



}
